# 网格

> 有一天，我进入了网格。 - 凯文·弗林

网格是在Cryptovoxels基础设施上运行您的地块脚本的多人服务器。它运行与普通脚本引擎完全相同的API，但它在服务器上跟踪状态并将更改发送给所有连接的用户。这意味着如果您点击一个门并打开它，站在您附近的其他人也会看到门打开。这还意味着您可以与其他玩家玩多人游戏，服务器将维护游戏的状态。

多人服务器是免费使用的，并由 [Cryptovoxels Corporation](https://wiki.cryptovoxels.com/Corporate) 托管。您的脚本根据需要启动，有严格的8MB堆内存限制，受CPU时间限制，并在您的地块处于空闲状态时被终止。

使用网格的优势：

* 您的脚本是多人的
* 您的脚本在受信任的环境中运行
* 您的脚本始终可用
* 您不必支付托管费用，也不必等待托管提供商启动您的脚本

缺点：

* 调试可能有点棘手
* 您必须将您的体验限制在8MB的内存中

## 如何激活
1. 进入您的地块，前往 [Parcels选项卡](https://www.cryptovoxels.com/account/parcels)。确保已登录！

2. 如果您拥有该地块并且已登录，您应该会看到一个类似下面的管理面板：

![admin_panel_parcel_v4.55.png](https://wiki.cryptovoxels.com/tutorials/admin_panel_parcel_v4.55.png =60%x){.align-center}

3. 勾选“在网格上”。

完成！您的脚本现在是多人的。

## 发生了什么

（以[地块＃78](https://www.cryptovoxels.com/parcels/78) 为例 - 将您自己的地块ID放入以跟踪）

1. 您进入地块
2. 该地块被设置为 `grid: true`（在地块设置中设置）

![[how_to_grid]adming_panel_grid_activated_v4.55.png](https://wiki.cryptovoxels.com/tutorials/[how_to_grid]adming_panel_grid_activated_v4.55.png =60%x){.align-center}

3. Web客户端连接到 `wss://grid.cryptovoxels.com/grid/78`
4. 网格服务器启动一个v8 [隔离虚拟机](https://www.npmjs.com/package/isolated-vm?activeTab=readme)
5. 隔离虚拟机加载[脚本宿主](http://github.com/cryptovoxels/scripting)
5. 隔离虚拟机从 `https://untrusted.cryptovoxels.com/grid/parcels/78/scripts.js` 获取并评估您的JavaScript脚本
6. WebSocket连接被接受，您的客户端开始与您的网格服务器进行通信
7. 所有客户端断开连接，隔离虚拟机被销毁

目前，网格服务器会立即将来自您的脚本的消息转发回客户端，但在未来的版本中，这将被限制为每秒5或10次，因为通过公共互联网的WebSocket发送实时60次/秒的更新会导致严重的延迟和包堆积。

## 查看日志

您的日志将写入Redis并持久保存。它们是公开可见的（不要在日志中放入任何机密信息）：

`https://grid.cryptovoxels.com/grid/78/logs`

## 可用API

> 根据1.1.2版本，API非常基本，将来会有更多的API可用 {.is-warning}

网格服务器有自己的版本信息。在https://grid.cryptovoxels.com/ 上查看当前发布版本

* [脚本API](https://wiki.cryptovoxels.com/Scripting/Scripting)
* [内置函数](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects)
* `setTimeout`
* `setInterval`
* `console.log`

路线图：

* `clearTimeout`
* `clearInterval`
* [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)
* [`AsyncStorage`](https://reactnative.dev/docs/asyncstorage.html)
* [`importScripts`](https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope/importScripts)
* [物理引擎](https://schteppe.github.io/cannon.js/)